package com.cupk.rotaryguard.user.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.cupk.common.base.utils.result.Result;
import com.cupk.rotaryguard.user.entity.User;
import com.cupk.rotaryguard.user.entity.vo.UserVo;
import com.cupk.rotaryguard.user.entity.vo.LoginUserVo;
import org.springframework.web.bind.annotation.RequestParam;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
 * @author tjy
 * @date 2023/3/16
 * @apiNote
 */
public interface UserService extends IService<User> {
    /**
     * 列举用户信息
     *
     * @return
     */
    Result listUserInfo();

    /**
     * 登陆
     *
     * @param userVo
     * @param request
     * @return
     */
    Result login(LoginUserVo userVo, HttpServletRequest request);

    /**
     * 登出
     *
     * @param request
     * @return
     */
    Result logout(HttpServletRequest request);

    /**
     * 添加用户
     *
     * @param userVo
     * @return
     */
    Result addUser(UserVo userVo);

    /**
     * 修改密码
     *
     * @param userId
     * @param oldPwd
     * @param newPwd
     * @return
     */
    Result chPwd(Long userId, String oldPwd, String newPwd);

    /**
     * 修改用户名
     *
     * @param userId
     * @param username
     * @return
     */
    Result chUsername(Long userId, String username);

    /**
     * 批量删除
     *
     * @param ids
     * @return
     */
    Result delUsers(List<Integer> ids);

    /**
     * 根据用户名分页查询
     *
     * @param pageNum
     * @param pageSize
     * @param username
     * @return
     */
    Result getUsersByUsername(Integer pageNum, Integer pageSize, String username);

    /**
     * 获取被注销的用户
     *
     * @param pageNum
     * @param pageSize
     * @return
     */
    Result listBannedUsers(Integer pageNum, Integer pageSize);

    /**
     * 封禁账户
     *
     * @param id
     * @return
     */
    Result banUser(Integer id);

    /**
     * 根据用户id查询用户信息
     *
     * @param id
     * @return
     */
    Result getUserInfoById(Long id);

    /**
     * 更改用户信息
     *
     * @param id
     * @param username
     * @param tel
     * @param address
     * @param email
     * @return
     */
    Result chUserInfo(String id, String username, String tel, String address, String email);

    /**
     * 单个删除用户（逻辑删除）
     *
     * @param id id
     * @return 返回
     */
    Result delUserById(Integer id);
}
